FIG. 1 shows a typical network, with a TCP sending host 101 sending traffic using TCP over a network 103 to a TCP receiving host 102. The TCP sending host 101 has a TCP transmission queue 104. Network 103 could be, for example a single wired, 3 G, 4 G or Wi-Fi network. In one embodiment, network 103 could further contain wired, 3 G, 4 G or Wi-Fi subnetworks. In a system, such as that of FIG. 1, there are 3 dominant sources of delay:                1. The propagation delay of the network 103        2. The delay due to buffering within the network 103        3. The delay due to buffering in the TCP transmission queue 104 at the sending host 101        
Then DT=D1+D2+D3 
where DT is the total delay                D1 is the delay due to source (1)        D2 is the delay due to source (2)        D3 is the delay due to source (3)        
In many cases total delay tends to be dominated by D3.
It is also known that TCP has different stages and that maximum throughput is reached after progression through one or more other stages. This progression can take place over several multiples of Round Trip Time (RTT). This has the effect of reducing the average throughput of traffic over the link from the host.
Furthermore, different types of traffic have different requirements. For example, traffic such as file transfers requires large amounts of bandwidth. Remote Desktop Protocol (RDP) traffic is more latency sensitive. Traffic such as email only requires reliable delivery. Having one TCP congestion control program at the sending host 101 does not allow for optimization of different types of traffic.
In addition, different network types have different requirements. For example, a wired network has different requirements from a 3 G, 4 G or Wi-Fi network. Having one TCP congestion control program at the sending host 101 does not allow for optimization of different types of networks.